﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Collections;

namespace GIFT
{
    class ConsultaTexto
    {
        //Constructor de la clase
        public ConsultaTexto()
        {
            consulta = new Consulta();
        }

        //Busca en la base de datos el atributo del Texto con el nombre que recibe como parametro
        public String buscarAtributo(String nombre, String atributo)
        {
            String atr = "ERROR";
            SqlDataReader datos;
            String sentenciaSql = "Select " + atributo + " from texto Where nombre='" + nombre + "'";
            datos = consulta.HacerConsulta(sentenciaSql);
            if (datos != null) //si hay datos se llenan los campos
            {
                while (datos.Read())
                {
                    atr = datos.GetValue(0).ToString();
                }
            }
            consulta.CierraConexion(); //Cierra conexion
            return atr;
        }

        //Recibe un nombre y retorna true si este ya existe en la base de datos
        public bool existe(String nombre)
        {
            SqlDataReader datos;
            String sentenciaSql;
            sentenciaSql = "Select nombre From texto  Where nombre ='" + nombre + "'";
            datos = consulta.HacerConsulta(sentenciaSql);
            if (datos.HasRows)//lo que se haga para saber si no retorno resultados 
            {
                consulta.CierraConexion();//Cierra la conexion
                return true;
            }
            consulta.CierraConexion();//Cierra la conexion
            return false;
        }

        //Busca nombres de los Texto que contengan la hilera que reciba como parametro en el nombre o la descripcion
        public ArrayList buscarConcordancias(String frase)
        {
            ArrayList campos = new ArrayList();
            String sentenciaSql;
            SqlDataReader datos;
            sentenciaSql = "Select T.nombre From texto T Where T.nombre LIKE '%" + frase + "%' OR T.descripcion LIKE '%" + frase + "%'";
            datos = consulta.HacerConsulta(sentenciaSql);
            if (datos != null)
            {
                while (datos.Read())
                {
                    campos.Add(datos.GetValue(0).ToString());
                }
            }
            consulta.CierraConexion();
            return campos;
        }

        //Obtiene de la base de datos todos los Texto existentes, y los retorna en un arreglo
        public ArrayList obtieneTextos()
        {
            ArrayList textos = new ArrayList();
            String sentenciaSql;
            SqlDataReader datos;
            sentenciaSql = "Select nombre From texto";
            datos = consulta.HacerConsulta(sentenciaSql);
            if (datos != null)
            {
                while (datos.Read())
                {
                    textos.Add(datos.GetValue(0).ToString());
                }
            }
            consulta.CierraConexion();
            return textos;
        }

        //Borrar un Texto
        public void borrar(String nombre)
        {
            String sentenciaSql = "DELETE FROM texto WHERE nombre ='" + nombre + "'";//crea la consulta
            SqlDataReader datos = consulta.HacerConsulta(sentenciaSql);//la ejecuta
            consulta.CierraConexion();//cierra la conexion
        }

        //Guarda en la base de datos un nuevo Texto, recibe los valores a introducir 
        public void crear(String nombre, String descripcion, String largo, String defecto)
        {
            String sentenciaSql = "INSERT INTO [GIFT].[dbo].[texto] ([nombre],[descripcion],[fecha_actualizacion],[largo],[texto por defecto]) VALUES ('" + nombre + "','" + descripcion + "',(GetDate()),'" + largo + "','" + defecto + "')";
            SqlDataReader datos = consulta.HacerConsulta(sentenciaSql);
            consulta.CierraConexion();//Cierra la conexion
        }

        //Modifica un Texto en la base de datos
        public void modificar(String nombre, String descripcion, String largo, String defecto)
        {
            String sentenciaSql; //va a guardar la consulta a realizar
            SqlDataReader datos; //guarda el ersultado de la consulta
            sentenciaSql = "UPDATE texto SET descripcion= '" + descripcion + "',fecha_actualizacion= (GetDate()),[largo]='" + largo + "',[texto por defecto]= '" + defecto + "' WHERE nombre= '" + nombre + "'";
            datos = consulta.HacerConsulta(sentenciaSql); //Ejecuta la consulta
            consulta.CierraConexion();//Cierra la conexion
        }


        //Variables globales
        private Consulta consulta;

    }
}
